home *** CD-ROM | disk | FTP | other *** search
/ Network PC / Network PC.iso / amiga utilities / graphics / display / mpega / src / audioport.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-11-20  |  3.4 KB  |  121 lines

  1. /*------------------------------------------------------------------------------
  2.  
  3.     File    :    AudioPort.h
  4.  
  5.     Author  :    Stéphane TAVENARD
  6.  
  7.     $VER:   AudioPort.h  1.3  (22/07/1995)
  8.  
  9.     (C) Copyright 1995-1995 Stéphane TAVENARD
  10.     All Rights Reserved
  11.  
  12.     #Rev|   Date   |              Comment
  13.     ----|----------|--------------------------------------------------------
  14.     0    |14/05/1995| Initial revision                      ST
  15.     1    |25/05/1995| 8-bit or 16-bit mode                  ST
  16.     2    |19/06/1995| Added FreeSignal in DeletePort              ST
  17.     3    |23/06/1995| Aminet release                      ST
  18.     4    |09/07/1995| Use now ex_EClockFrequency for period calculation      ST
  19.     5    |22/07/1995| Added volume control for 16-bit samples          ST
  20.  
  21.     ------------------------------------------------------------------------
  22.  
  23.     Definition of audio port
  24.  
  25. ------------------------------------------------------------------------------*/
  26.  
  27. #ifndef AUDIOPORT_H
  28. #define AUDIOPORT_H
  29.  
  30. #include <exec/types.h>
  31. #include <exec/io.h>
  32.  
  33. /* Control flags at Open only */
  34. #define AUF_STEREO    (1<<0)      /* Stereo samples */
  35. #define AUF_16BITS    (1<<1)      /* 16-bit samples, 8-bit otherwise */
  36. #define AUF_MIXING    (1<<6)      /* Mixing used #5 */
  37. /* Control flags (others) */
  38. #define AUF_FILTER    (1<<2)      /* Set Filter */
  39. #define AUF_VOL     (1<<3)      /* Set Volume */
  40. #define AUF_FREQ    (1<<4)      /* Set Frequency */
  41. #define AUF_NOWAIT    (1<<5)      /* Do not wait end of write */
  42. /* Audio commands */
  43. #define AUC_CONTROL    0
  44. #define AUC_WRITE    1
  45. #define AUC_STOP    2
  46. #define AUC_CONTINUE    3
  47.  
  48. typedef struct {
  49.    void  *hard_port;       /* Audio port private */
  50.    UBYTE flags;        /* Control flags = combination of AUC_M_xxx */
  51.    UBYTE signal;       /* signal if you want to wait IO yourself after a write */
  52.    UBYTE command;       /* Audio command */
  53.    UBYTE filter_on;       /* 0=filter off 1=filter on */
  54.    ULONG frequency;
  55.    UWORD l_vol, r_vol;       /* 0..64 only for 8-bit mode */
  56.    WORD  *l_wave;       /* Buffer of 8-bit or 16-bit L wave */
  57.    WORD  *r_wave;       /* Buffer of 8-bit or 16-bit R wave */
  58.    ULONG wave_length;       /* Length of wave to output MUST BE EVEN !!! */
  59.    ULONG mixing_frequency; /* Mixing frequency if AUF_MIXING set */
  60.    LONG  error;
  61. } AU_PORT;
  62.  
  63.  
  64. #ifndef ASM
  65. #ifdef __SASC
  66. #define ASM_A0 register __a0
  67. #define ASM_A1 register __a1
  68. #define ASM_A2 register __a2
  69. #define ASM_A3 register __a3
  70. #define ASM_A4 register __a4
  71. #define ASM_A5 register __a5
  72. #define ASM_A6 register __a6
  73. #define ASM_D0 register __d0
  74. #define ASM_D1 register __d1
  75. #define ASM_D2 register __d2
  76. #define ASM_D3 register __d3
  77. #define ASM_D4 register __d4
  78. #define ASM_D5 register __d5
  79. #define ASM_D6 register __d6
  80. #define ASM_D7 register __d7
  81. #define ASM __asm
  82. #else
  83. #define ASM_A0 __A0
  84. #define ASM_A1 __A1
  85. #define ASM_A2 __A2
  86. #define ASM_A3 __A3
  87. #define ASM_A4 __A4
  88. #define ASM_A5 __A5
  89. #define ASM_A6 __A6
  90. #define ASM_D0 __D0
  91. #define ASM_D1 __D1
  92. #define ASM_D2 __D2
  93. #define ASM_D3 __D3
  94. #define ASM_D4 __D4
  95. #define ASM_D5 __D5
  96. #define ASM_D6 __D6
  97. #define ASM_D7 __D7
  98. #define ASM
  99. #endif
  100. #endif
  101.  
  102. AU_PORT ASM *AU_open( ASM_D0 UBYTE flags, ASM_D1 int buffer_size );
  103. /*---------------------------------------------
  104.    Open an audio port.
  105.    buffer_size is the size of the audio buffers
  106.    buffer_size must be even and < 0x20000
  107. */
  108.  
  109. void ASM AU_close( ASM_A0 AU_PORT *audio_port );
  110. /*----------------------------------
  111.    Close an audio port.
  112. */
  113.  
  114. void ASM AU_write( ASM_A0 AU_PORT *audio_port );
  115. /*----------------------------------
  116.    Write into an audio port
  117. */
  118.  
  119.  
  120. #endif /* AUDIOPORT_H */
  121.